<?php
class UpgradeAction extends BaseAction {
    
    //升级程序，分STEP流程
    //用途：POST
    public function index(){
    	
    	$step = $this->_get("step");
    	$step = $step==2?2:1;
    	
    	//当STEP = 1时并且【存在】“升级补丁”，可跳过第一步
    	if($step == 1 && file_exists("./".UpgradeType::$ZIP_FILE)){
    		header("Location: ".__APP__."/center/upgrade/?step=2");
    		return;
    	}
    	//当STEP = 2时并且【不存在】“升级补丁”，返回第一步
    	if($step == 2 && !file_exists("./".UpgradeType::$ZIP_FILE)){
    		header("Location: ".__APP__."/center/upgrade/?step=1");
    		return;
    	}
    	
    	$this->assign("step",$step);
    	$this->display();
    }
    
	//下载远程升级补丁  处理流
    //用途：POST
    public function download_process(){
    	
    	$webConfig = WebConfigHelper::getObject();	//系统配置数据
    	
    	//下载远程文件
    	$result = CommonUtil::download(UpgradeType::$UPGRADE_SITE_URL.$webConfig["latest_upgrade_file_addr"],"./".UpgradeType::$ZIP_FILE);
    	if($result !== true){
    		echo CommonUtil::ajaxReturn(Status::$ERROR,$result);
    		return ;
    	}
		echo CommonUtil::ajaxReturn(Status::$SUCCESS,"下载完成！");
    	
    }
    
	//升级程序处理流
    //用途：POST
    public function upgrade_process(){
    	
    	//检查补丁是否存在
    	if(!file_exists("./".UpgradeType::$ZIP_FILE)){
    		echo CommonUtil::ajaxReturn(Status::$ERROR,"升级补丁还未下载，请返回第1步下载最新补丁！");
    		return ;
    	}
    	
    	//1...解压升级文件
    	$arr = CommonUtil::unzip('./'.UpgradeType::$ZIP_FILE, "./");
    	if($arr["result"] == false){
    		CommonUtil::fwrite($arr["msg"],'./'.UpgradeType::$ERROR_FILE);	//记录升级日志，便于出错后，找出问题所在
    	}
    	
    	//2...执行SQL脚本，更新数据库
    	if(file_exists("./".UpgradeType::$SQL_FILE)){
	    	$arr = CommonUtil::execSQL("./".UpgradeType::$SQL_FILE);
	    	if($arr["result"] == false){
	    		CommonUtil::fwrite($arr["msg"],'./'.UpgradeType::$ERROR_FILE,'a');	//记录升级日志[APPEND方式]，便于出错后，找出问题所在
	    	}
    	}
    	
    	//3...删除升级文件，还我一个绿色空间
    	CommonUtil::deleteFile("/".UpgradeType::$SQL_FILE);
    	CommonUtil::deleteFile("/".UpgradeType::$ZIP_FILE);
    	
    	$webConfig = WebConfigHelper::getObject();	//系统配置数据
    	
    	//4...更新本地版本信息
    	$data["version_number"] = $webConfig["latest_version_number"];
    	
    	$url = UpgradeType::$UPGRADE_SITE_URL.'index/'.'?k='.urlencode($data["version_number"]);
		$result = json_decode(file_get_contents($url));
		if(!empty($result)){
			if($result->status == 1){	//有补丁情况
				//更新本地配置数据，刷新“最新版本号”、“上次版本号检查时间”。以免每次到该页面，都请求远程数据，会影响双方的网站速度
				$data["latest_version_number"] = $result->data->version_name;
				$data["latest_upgrade_file_addr"] = $result->data->current_upgrade_file_addr;
				WebConfigHelper::update($data,"");
			}else{
				$data["latest_version_number"] = "";
		    	$data["latest_upgrade_file_addr"] = "";
			}
		}else{
			$data["latest_version_number"] = "";
	    	$data["latest_upgrade_file_addr"] = "";
		}
		$data["last_check_timeline"] = time();
		
		WebConfigHelper::update($data);
    	
		echo CommonUtil::ajaxReturn(Status::$SUCCESS,"升级完成！");
    	
    }
    
    
}